package repository

import (
	"Data-API-MCP/backend/internal/domain/entity"
	"context"
	"time"
)

// APICallRepository API调用记录仓储接口
type APICallRepository interface {
	// Create 创建API调用记录
	Create(ctx context.Context, call *entity.APICall) error

	// FindByID 根据ID查询API调用记录
	FindByID(ctx context.Context, id string) (*entity.APICall, error)

	// List 获取API调用记录列表
	List(ctx context.Context, offset, limit int) ([]*entity.APICall, error)

	// ListByAPIID 获取指定API的调用记录列表
	ListByAPIID(ctx context.Context, apiID string, offset, limit int) ([]*entity.APICall, error)

	// ListByTimeRange 获取指定时间范围内的调用记录列表
	ListByTimeRange(ctx context.Context, startTime, endTime time.Time, offset, limit int) ([]*entity.APICall, error)

	// ListByCaller 获取指定调用者的调用记录列表
	ListByCaller(ctx context.Context, caller string, offset, limit int) ([]*entity.APICall, error)

	// Count 获取调用记录总数
	Count(ctx context.Context) (int64, error)

	// CountByAPIID 获取指定API的调用记录总数
	CountByAPIID(ctx context.Context, apiID string) (int64, error)

	// CountByTimeRange 获取指定时间范围内的调用记录总数
	CountByTimeRange(ctx context.Context, startTime, endTime time.Time) (int64, error)

	// CountByCaller 获取指定调用者的调用记录总数
	CountByCaller(ctx context.Context, caller string) (int64, error)

	// GetStatistics 获取API调用统计信息
	GetStatistics(ctx context.Context, apiID string, startTime, endTime time.Time) (*entity.APIStatistics, error)
}
